perm filename APP1[AIM,DBL]2 blob
sn#125917 filedate 1974-10-21 generic text, type T, neo UTF8
00100 .DEVICE XGP
00200 .FONT 1 "FIX25"
00300 .FONT 2 "SIGN57"
00400 .FONT 3 "SHD40"
00500 .FONT 4 "BDI25"
00600 .FONT 5 "NGB30"
00700 .FONT 6 "NGR20"
00800 .TURN ON "↓_π{"
00900 .TURN ON "⊗" FOR "%"
01000 .PAGE FRAME 53 HIGH 76 WIDE
01100 .MACRO B ⊂ BEGIN VERBATIM GROUP ⊃
01200 .MACRO E ⊂ APART END ⊃
01300 .TABBREAK
01400 .EVERY HEADING(⊗3BEINGS⊗*,,⊗4Doug Lenat⊗*)
00100 .EVERY FOOTING(⊗6Fourth Draft .... {DATE},page A1.{IF PAGE = 1 THEN 1 ELSE PAGE},BEING PARTS)
00200 .PORTION APPENDIX
00300 .COUNT PAGE PRINTING 1
00400 .NEXT PAGE
00500 ⊗2APPENDIX 1. ⊗* ⊗3BEING PARTS⊗*
00600
00700 ⊗4IDEN ⊗* How is this BEING referenced in English sentences?
00800 Implemented as productions, whose left sides may make arbitrarily
00900 complex examinations of the world (search for assertions and
01000 query BEINGs' parts), and whose right sides may cause
01100 arbitrarily complex side effects before returning a value.
01200
01300 ⊗4ARGS ⊗* How many? Which are required and which are optional? What
01400 variables must remain local to this BEING? Which global variables
01500 are accessed by some part of this BEING?
01600
01700 ⊗4ARG-CHECK ⊗* Predicates which examine each argument for
01800 suitability. This could include whether defined, whether numerical,
01900 or something more complex (e.g., is it the name of a BEING whose
02000 DATA-STRUCTURE part requires it be initialized to a non-null value?)
02100
02200 ⊗4EVAL-ARGS ⊗* Is the program an NLAMBDA? Is the code it writes
02300 NLAMBDA? If so, which arguments (if any) should be evaluated upon
02400 entry?
02500
02600 ⊗4WHAT ⊗* A brief summary of the global purpose of the BEING. This
02700 is usually a template for an English sentence, more useful for
02800 communication with the user than with other BEINGs. The variables in
02900 this sentence could be instantiated by examining the world, by asking
03000 other BEINGs, by the BEING who called this one, etc.
03100
03200 ⊗4WHY ⊗* A justification for this BEING's existence; why it is
03300 called. The role of the caller to fill in pieces of WHY is much more
03400 important than with the WHAT part.
03500
03600 ⊗4HOW ⊗* A summary of the method(s) used by the BEING to do its
03700 thing. This is a summary of the global strageties this BEING will
03800 try, as contrasted to the more specific parts listed below. Again,
03900 this is more for the user's benefit than for other BEINGs'.
04000
04100 ⊗4EFFECTS ⊗* What will be true after calling this BEING?
04200 Post-conditions. These are broken into main and minor effects, and
04300 weighted as to certainty that they will occur. This part is
04400 implemented as productions: all the EFFECTS parts of all the BEINGS
04500 are merged into a large production system. This is then searched
04600 (pattern-invoked) when
04700 some BEING wants something to be true.
04800
04900 ⊗4WHEN ⊗* Factors and weights giving the BEING's temporal immediacy.
05000 This is computed as a sum of weighted factors.
05100 Although PUP6 should probably
05200 compare descriptions of "desire to be in control," rather than just
05300 numbers, this works sufficiently well for the present. Perhaps the
05400 weakness of perceptrons is important only if they are a major part of
05500 the program. In our case, each BEING has a set of triples here, each
05600 of which is a BEING call. They must EVALuate to, respectively, T/NIL,
05700 a weight (to be added in if T), and a sentence justifying this
05800 particular factor.
05900
06000 ⊗4META-CODE ⊗* The "body" of the code, but with uninstantiated
06100 subparts. This may contain goal statements, nondeterministic calls to
06200 other BEINGS, uninstantiated pieces which fill themselves in by
06300 asking other parts of this BEING, its caller, or the user.
06400
06500 ⊗4COMMENTS ⊗* This is a BEING part, and should be distinguished from
06600 the English-like sentences which are scatterred throughout each part
06700 to aide comprehension. This part is simply a list of instructions
06800 for filling in undefined "slots" in other parts. Each member of
06900 COMMENTS is evalled, just prior to attempting the META:CODE part.
07000
07100 ⊗4REQUISITES ⊗* Suppose this BEING ⊗4is⊗* chosen to be in control.
07200 What must be satisfied just before (pre-) the BEING executes?
07300 just after (post-)and during (co-) execution? This is really three
07400 separate BEING parts. The satisfying is ⊗4active⊗*, in that if the
07500 conditions aren't true, other BEINGs will be called to try to make
07600 them true. (If ⊗4passive⊗*, the BEING would simply fail. The
07700 ARG-CHECK part is passive in this sense.)
07800
07900 ⊗4DEMONS ⊗* Which demons should be enabled during the BEING's
08000 execution? They remain active as long as this BEING activation exists
08100 in the control tree.
08200
08300 ⊗4AFFECTS ⊗* Which other BEINGs might be called by this BEING? Why?
08400 That is, which parts of this BEING want what to be done?
08500
08600 ⊗4COMPLEXITY ⊗* A vector describing such features as recursiveness,
08700 transparency to user, etc. Often the CHOOSE-FROM BEING will compare
08800 several BEINGs by a linear function on this vector. The actual
08900 components settled on were: how easy it is to call, its chance of
09000 calling* itself, its chance of succeeding, the effort in trying it,
09100 the efficiency of the code it will generate,
09200 and whether it must be inhibited absolutely at present. All these
09300 range over [0,1].
09400
09500 ⊗4SPECIALIZATIONS ⊗* How to write a more streamlined, special-case
09600 version of this BEING. What decisions must be made, and how do
09700 they simplify the parts of the new BEING?
09800
09900 ⊗4ALTERNATIVES ⊗* If this BEING fails, what are some equivalent
10000 BEINGs?
10100
10200 ⊗4GENERALIZATIONS ⊗* What are some general BEINGs, encompassing
10300 this one?
10400
10500 ⊗4PREDICATE ⊗* How many values does this BEING return? What is the
10600 type of each one (numeric, logical, etc.)? Are there side effects as
10700 well?
10800
10900 ⊗4DATA-STRUC ⊗* If it is one, what must be done to initialize,
11000 access, insert, and delete elements? What is the structure of a
11100 typical element?
11200
11300 ⊗4ENCODABLE ⊗* How to control writing a specialized new BEING: which
11400 other BEING parts must be called, and in what order.
11500
11600 ⊗4INHIBIT-CURRENT-DEMONS ⊗* A lock/unlock mechanism. When handling a
11700 demonic interrupt, we cannot permit the demon to interrupt us again.
11800
11900 ⊗4FORM-CHANGING ⊗*
12000 Does the entire form of some new BEING's part(s) have to be altered?
12100 If so, how?
12200
12300 Below is listed, for each BEING part, the number of BEINGS in PUP6
12400 which had this part specified for them. Since there were exactly one
12500 hundred BEINGS, these are also percentages. On the average, each
12600 part was used in 29.3% of all BEINGs. This is slightly unfair to PUP6,
12700 since the ⊗4absence⊗* of some BEING parts (e.g., NLAMBDA) conveys a
12800 nontrivial bit of information. Also present is the ⊗4use⊗* of each part.
12900
13000 .VERBATIM
13100
13200 54 IDEN Decide if this BEING gets control
13300 35 IMPLICIT:ARGS Initialize when this BEING gets control
13400 63 EXPLICIT:ARGS Bind when this BEING gets control
13500 81 EXPLICIT:ARGS:CHECK Evaluate when this BEING gets control
13600 4 NLAMBDA Evaluate when this BEING gets control
13700 3 NON:EVAL:ARGS Used when creating specialization of this BEING
13800 82 WHAT Instantiate and type out to user if requested
13900 77 HOW Instantiate and type out to user if requested
14000 72 WHY Instantiate and type out to user if requested
14100 27 MAIN:EFFECTS Decide if this BEING gets control
14200 2 MINOR:EFFECTS Decide if this BEING gets control
14300 19 WHEN Decide if this BEING gets control
14400 70 META:CODE Evaluate when this BEING gets control
14500 16 COMMENTS Evaluate when this BEING gets control
14600 6 PRE:REQUISITES Satisfy when this BEING gets control
14700 0 CO:REQUISITES Satisfy when this BEING gets control
14800 9 POST:REQUISITES Satisfy when this BEING gets control
14900 7 DEMONS Activate when this BEING gets control
15000 14 AFFECTS Decide if this BEING gets control
15100 92 COMPLEXITY:VECTOR Decide if this BEING gets control
15200 27 GENERALIZATIONS Decide what BEING to pass control to
15300 40 SPECIALIZATIONS Used when creating specialization of this BEING
15400 16 ALTERNATIVES Decide what BEING to pass control to
15500 15 PREDICATE Asked questions by other BEINGs' parts
15600 4 DATA:STRUCTURE Asked questions by other BEINGs' parts
15700 9 ENCODABLE Used when creating specialization of this BEING
15800 5 INHIBIT:CURRENT:DEMONS Eval. when this BEING gets control
15900 1 FORM:CHANGING Evaluate when this BEING gets control